1. Technical Field
This invention generally relates to computer systems, and more specifically relates to apparatus and methods for generating keys in a computer network.
2. Background Art
Since the dawn of the computer age, computers have evolved and become more and more powerful. In our present day, computers have become indispensable in many fields of human endeavor including engineering design, machine and process control, information storage and retrieval, and office computing. One of the primary uses of computers is for information storage and retrieval.
Database systems have been developed that allow a computer to store a large amount of information in a way that allows a user to search for and retrieve specific information in the database. For example, an insurance company may have a database that includes all of its policy holders and their current account information, including payment history, premium amount, policy number, policy type, exclusions to coverage, etc. A database system allows the insurance company to retrieve the account information for a single policy holder among the thousands and perhaps millions of policy holders in its database.
One common requirement for databases is the need to generate keys. A key is used to access data in a database. A particular type of key known as a primary key is a key that is unique in the database. Primary keys are generally generated for each entry in a database, allowing the entry to be uniquely identified from all other entries. One way to generate primary keys is to allow user applications to generate their own keys. The problem with this approach is that different applications may generate duplicate keys, violating the desire that many primary keys should be globally unique. Multiple applications could generate their own keys if there were synchronization between the applications that would assure that both could not allocate the same key.
When computer system are networked together, the job of generating globally unique primary keys becomes more complicated. One prior art solution that assures global uniqueness of primary keys provides a central server that provides all keys to all applications on the network. By providing a single point for key generation, the uniqueness of primary keys is assured. However, this benefit comes at costs that may become significant or even prohibitive. First, a prime problem with having a single point for generating primary keys on the network is that it provides a single point of failure. If the key generator fails, if the key generator is taken down, or if network communication with the key generator is lost, all applications that depend on the key generator are not able to continue. Thus, a seemingly small problem may result in a huge shutdown of network applications and resources. Second, as the number of clients grows, the ability of the single key generator to keep up with the number of requests fails. At some point, the generation of keys becomes a bottleneck to performance. Third, each request by a client application requires network communication with the key generator, thereby creating significant bus traffic for sending keys between the global key generator and the client applications. Without an apparatus and method for generating keys without the drawbacks discussed above, the computer industry will continue to suffer from inefficient mechanisms and methods for generating globally unique keys in a network computer environment.